#include <stdio.h>
#include <string.h>
#include<ctype.h>
int main() 
{ 
	char str[10001] = { 0 };	//字符串最长10000 
	while (gets(str) > 0)//set遇到空格不会停止，所以此处用gets而不用scanf(找不到gets定义，离谱)
	{
		int row = 0;
		char *ptr = str;
		char *word[1000] = {NULL};
		while (*ptr != '\0') {
			//如果是个字母字符，则是单词的起始字符
			if (isalpha(*ptr)) {
				word[row++] = ptr;//保存每个单词的起始地址 
				//把本次的单词字母字符走完，直到遇到非字母字符 
				while (*ptr != '\0' && isalpha(*ptr))
				{
					ptr++;
				}
			}
			*ptr = '\0';
			//把非字母的数据全部替换为结尾标志
			ptr++;
		}
		for (int i = row - 1; i >= 0; i--)		{
			printf("%s ", word[i]);//针对所有单词的起始地址逆序开始打印即可
		}
		printf("\n"); 
	}
}